This invention relates generally to storage and retrieval of memory data, and more particularly to pipelining and prefetching of executable memory data associated with various storage locations.
In portable environments or otherwise, many processor-based devices, such as consumer devices may include a semiconductor nonvolatile memory for erasably and programmably storing and retrieving information that may be accessed. One type of commonly available and used semiconductor nonvolatile memory is a flash memory. To operate a consumer device, a mix of code and data may be used in applications, especially in context-driven applications. For instance, a variety of wireless devices including cellular phones may include a flash memory to store different data files and resident applications. Likewise, a portable device, e.g., a personal digital assistant (PDA) may incorporate a flash memory for storing, among other things, certain operating system files and configurable data. As an example, flash memory executable data associated with instructions executing application programs may be stored and retrieved via a resident file management system. These instructions may be accessed in sequence rather than randomly, as is data.
One of the concerns regarding storage and retrieval of memory data involves memory latencies. Power and bandwidth consumption and portability of instructions across platforms or standards is another significant concern, particularly for wireless devices. While accessing instructions, a myriad of techniques including prefetching or pipelining has been deployed to reduce memory latencies. However, the memory latencies have not improved as fast as the operating frequency of microprocessors in processor-based devices. Moreover, conventional methods used for prefetching or pipelining are either static—sequentially prefetching or pipelining cache lines, decreasing the memory latencies at the expense of power or bandwidth consumption, or require additional complex silicon, again increasing power consumption. Likewise, alteration of instruction code to accommodate special no operation (NOP) instructions may cause the instruction code to become unportable across platforms and/or standards.
Thus, there is a continuing need for better ways to store and retrieve memory data.